package test

import (
	"blog/database"
	"blog/util"
	"fmt"
	"testing"
)

func init() {
	util.InitLog("log")
}
func TestUser(t *testing.T) {
	user := database.GetUserByName("dqq")
	if user == nil {
		t.Fail()
		return
	}
	if user.PassWd != "e10adc3949ba59abbe56e057f20f883e" {
		fmt.Println(user.PassWd)
		t.Fail()
		return
	}
	user = database.GetUserByName("none")
	if user != nil {
		t.Fail()
		return
	}
}

func TestCreateUser(t *testing.T) {
	name, pass := "大乔乔", "345678"
	database.CreateUser(name, pass)
}

func TestDeleteUser(t *testing.T) {
	name := "大乔乔"
	database.DeleteUser(name)
}

// go test -v .\database\test\ -run=^TestUser$ -count=1
// go test -v .\database\test\ -run=^TestCreateUser$ -count=1
// go test -v .\database\test\ -run=^TestDeleteUser$ -count=1

/*

func init(){
	//单测文件相当于 是当前目录

	database.GetBlogDBConnection()
}




func hash(pass string) string {
	hasher := md5.New()
	hasher.Write([]byte(pass))
	digest := hasher.Sum(nil)
	return hex.EncodeToString(digest) //md5哈希的结果是128bit 32个字符

}

/*

项目          Error                              Fatal
中文意思       错误             					致命错误
严重程度  		比较严重，但程序还能继续运行 			极其严重，程序直接崩溃或无法继续
是否中断执行 	不中断，程序会尽量继续 						立即中断
举例 			插入重复主键、语法错误、权限不足 				内存耗尽、磁盘损坏、配置文件缺失
用户能否恢复 		通常可以修复后重试 						通常需要管理员介入，重启服务或修复环境
日志标记 			 [ERROR]  							[FATAL]
*/
/*
func TestRegisterUser(t *testing.T) {
    uid, err := database.RegisterUser("dqq", hash("123456"))
    if err != nil {
        t.Fatal(err)
    } else {
		fmt.Printf("register user success uid:%d",uid)
	}

	uid, err = database.RegisterUser("dqq", hash("123456"))
    if err == nil {
		fmt.Println("重复注册",uid)
		t.Fail()

	}else {
		fmt.Printf("注册失败 %s",err)

	}
}

func TestLogOffUser(t *testing.T) {
	err := database.LogOffUser(10)
	if err!=nil {
		t.Fatal(err)
	}
	err = database.LogOffUser(10)
	if err ==nil {
		t.Fatal(err)
	}
}


*/
